package dataspace

import "fmt"

type avltree struct {
	root *node // головная нода
}

// Конструктор нового сбалансированого дерева.
func newTree() *avltree { return &avltree{} }

// Метод ищет значение в дереве.
func (t *avltree) search(h uint64) *node {
	return t.root.search(h)
}

// Метод записывает значение в дерево.
func (t *avltree) add(h uint64, k, v []byte, e *element) {
	t.root = t.root.add(h, k, v, e)
}

// Метод удаляет значение из дерева.
func (t *avltree) remove(h uint64) {
	t.root = t.root.remove(h)
}

// Метод выводит структуру дерева в консоль.
func printTree(n *node, count int) {
	if n == nil {
		return
	}
	space := 4
	count += space
	printTree(n.right, count)
	for i := space; i < count; i++ {
		fmt.Print(" ")
	}
	fmt.Println("●")
	printTree(n.left, count)
}
